<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');


class home extends MY_Controller {
	/**
	 * Evita la validacion (enfocado cuando se usa ajax). Ver mas en privilegios_model
	 * @var unknown_type
	 */
	private $excepcion_privilegio = array('');

	public function _remap($method){
		$this->carabiner->css(array(
				array('bootstrap/bootstrap-simplex.css', 'screen'),
				array('bootstrap/bootstrap-responsive.css', 'screen'),
				array('bootstrap/charisma-app.css', 'screen'),
				array('bootstrap/jquery-ui-1.8.21.custom.css', 'screen'),
				array('bootstrap/fullcalendar.css', 'screen'),
				array('bootstrap/fullcalendar.print.css', 'print'),
				array('bootstrap/chosen.css', 'screen'),
				array('bootstrap/uniform.default.css', 'screen'),
				array('bootstrap/colorbox.css', 'screen'),
				array('bootstrap/jquery.cleditor.css', 'screen'),
				array('bootstrap/jquery.noty.css', 'screen'),
				array('bootstrap/noty_theme_default.css', 'screen'),
				array('bootstrap/elfinder.min.css', 'screen'),
				array('bootstrap/elfinder.theme.css', 'screen'),
				array('bootstrap/jquery.iphone.toggle.css', 'screen'),
				array('bootstrap/opa-icons.css', 'screen'),
				array('bootstrap/uploadify.css', 'screen'),

				array('base-tic.css', 'screen')
		));
		$this->carabiner->js(array(
				array('bootstrap/jquery-1.7.2.min.js'),
				array('bootstrap/jquery-ui-1.8.21.custom.min.js'),
				array('bootstrap/bootstrap-transition.js'),
				array('bootstrap/bootstrap-alert.js'),
				array('bootstrap/bootstrap-modal.js'),
				array('bootstrap/bootstrap-dropdown.js'),
				array('bootstrap/bootstrap-scrollspy.js'),
				array('bootstrap/bootstrap-tab.js'),
				array('bootstrap/bootstrap-tooltip.js'),
				array('bootstrap/bootstrap-popover.js'),
				array('bootstrap/bootstrap-button.js'),
				array('bootstrap/bootstrap-collapse.js'),
				array('bootstrap/bootstrap-carousel.js'),
				array('bootstrap/bootstrap-typeahead.js'),
				array('bootstrap/bootstrap-tour.js'),
				array('bootstrap/jquery.cookie.js'),
				array('bootstrap/fullcalendar.min.js'),
				array('bootstrap/jquery.dataTables.min.js'),
				/** chart libraries **/
				array('bootstrap/excanvas.js'),
				array('bootstrap/jquery.flot.min.js'),
				array('bootstrap/jquery.flot.pie.min.js'),
				array('bootstrap/jquery.flot.stack.js'),
				array('bootstrap/jquery.flot.resize.min.js'),

				array('bootstrap/jquery.chosen.min.js'),
				array('bootstrap/jquery.uniform.min.js'),
				array('bootstrap/jquery.colorbox.min.js'),
				array('bootstrap/jquery.cleditor.min.js'),
				array('bootstrap/jquery.noty.js'),
				array('bootstrap/jquery.elfinder.min.js'),
				array('bootstrap/jquery.raty.min.js'),
				array('bootstrap/jquery.iphone.toggle.js'),
				array('bootstrap/jquery.autogrow-textarea.js'),
				array('bootstrap/jquery.uploadify-3.1.min.js'),
				array('bootstrap/jquery.history.js'),
				array('bootstrap/charisma.js'),
		));

		if($this->session->userdata('id_usuario'))
    {
      if ($this->session->userdata['acceso'] === 'admin' || $this->session->userdata['tipo'] === 'tic')
        $this->{$method}();
      else
        redirect(base_url('free/'));
		}
    else
			redirect(base_url());
	}

	public function index(){
		$this->carabiner->css(array(
				array('libs/jquery.slider.css', 'screen'),
				array('libs/jquery.allinone_carousel.css', 'screen'),

        array('libs/jquery.scrollbarpaper.css', 'screen')
		));
		$this->carabiner->js(array(
				array('libs/jquery.slides.min.js'),
				array('libs/jquery.allinone_carousel.js'),

        array('libs/jquery.scrollbarpaper.min.js'),

				array('free/free.js'),
				array('tic/favoritos.js'),
				array('tic/carrito.js'),
				array('tic/footer.js'),
        array('http://connect.facebook.net/en_US/all.js'),
        array('tic/publicaciones.js'),
		));

		$params['info_empleado'] = $this->info_empleado['info']; //info empleado
		$params['seo'] = array(
			'titulo' => 'Acceso tic - Tienda Capp'
		);


		//url redirect de las paginas
		$params['url_redirect'] = base_url('tic/');


		/**** Carro de compras ****/
		//msg si se realiza alguna operacion
		$params['mod_compra'] = $this->showMsgsCompra();
		//obtiene acceso tic ilim
		$this->load->model('skin_model');
		$acc_ilim = $this->db->query("SELECT ticDiasFaltantesIlim(".$this->session->userdata('id_usuario').") AS acc_ilim");
		$acc_ilim = $acc_ilim->row();
		$params['acc_ilim'] = json_decode($acc_ilim->acc_ilim);
		//precios
		$precios = $this->db->query("SELECT id_precio, precio, tipo, descuento FROM precios ORDER BY id_precio ASC");
		foreach ($precios->result() as $key => $value) {
			if(strpos($value->tipo, 'ilim') !== false){
				$params['precios']['ilim'][$value->tipo] = $value;
			}else{
				$params['precios']['artics'][$value->tipo] = $value;
			}
		}
		$params['barra_right'] = $this->load->view('tic/general/barra_right', $params, true);
		/**** Carro de compras ****/


		$this->load->model('paquetes_model');
		$params['visitas'] = $this->paquetes_model->get_visitas_articulos($this->session->userdata('id_usuario'), '5');

		$params['infogramas'] = $this->skin_model->getInfografias('10');

    // Obtiene el total de mensajes pendientes por responder
    $params['total_mgs'] = $this->skin_model->get_total_mensajes_pendientes();

    $this->load->library('my_facebook');
    $params['fb_app_id'] = $this->my_facebook->APP_ID;
    $params['username'] = $this->session->userdata('nombre');

		$this->load->view('tic/header', $params);
		$this->load->view('tic/general/menu', $params);
		$this->load->view('tic/general/home', $params);
		$this->load->view('tic/footer');
	}

  /**
   * Metodo ajax con el cual se recuperan los mensajes de cierto usuario
   * para el chat en TIC
   * @echo json
   */
  public function ajax_carga_mensajes()
  {
    $this->load->model('skin_model');
    $mdl_res['mensajes'] = $this->skin_model->ajax_carga_mensajes();

    $this->ajax_resetchat();

    echo json_encode($mdl_res);
  }

  /**
   * Metodo ajax con el cual se resetea un parametro para que el chat no salga de nuevo
   * para el chat en TIC
   * @echo json
   */
  public function ajax_resetchat()
  {
    $this->session->unset_userdata(array('showmsn'=>''));
		$this->session->set_userdata(array('showmsn'=>'0'));
  }

  /**
   * Metodo ajax que realiza el "envio" del mensaje del chat de TIC
   * @echo json
   */
  public function ajax_envia_mensaje()
  {
    $this->load->model('skin_model');
    $mdl_res = $this->skin_model->envia_mensaje();

    echo json_encode($mdl_res);
  }

  /**
   * Carga el formulario perfil del menu TIC
   * @echo json
   */
  public function perfil()
  {

    $params['organiza'] = $this->db->select('id_organizacion, nombre, estudiante')
                                    ->from('organizaciones')
                                    ->order_by('nombre', 'ASC')
                                    ->get()->result();

    $this->load->model('usuarios_model');
    $id_usuario = $this->session->userdata('id_usuario');
    $params['info'] = $this->usuarios_model->get_usuario_info($id_usuario, TRUE);

    $echo['html'] = $this->load->view('tic/personal/perfil/perfil', $params, true);
    echo json_encode($echo);
  }

  /**
   * Verifica los campos del formulario actualizar perfil de TIC y actualiza la informacion del usuario.
   */
  public function ajax_update_perfil()
  {
    $this->load->model('usuarios_model');
    $this->config_update_perfil();
    if ($this->form_validation->run() === FALSE)
    {
      $params = array('frm_errors' => array('title'=>'Error', 'msg'=>preg_replace("[\n|\r|\n\r]", '', validation_errors()), 'ico'=>'error'));
    }
    else
    {
      $mdl_res = $this->usuarios_model->ajax_update_perfil_tic();

      if ($mdl_res['error'] === FALSE)
        $params = array('frm_errors' => array('title'=>'Error', 'msg'=>'Informacion actualizada correctamente', 'ico'=>'success'));
    }

    echo json_encode($params);
  }

  public function config_update_perfil()
  {
    $this->load->library('form_validation');

    $rules = array(
                array('field' => 'nombre',
                      'label' => 'Nombre',
                      'rules' => 'required|max_length[110]'),
                array('field' => 'email',
                      'label' => 'Email',
                      'rules' => 'required|max_length[70]|valid_email|callback_valida_email'),
                array('field' => 'organizacion',
                      'label' => 'Tipo Organización',
                      'rules' => 'required'));

    if ($_POST['contra_actual'] !== '' ||
        ($_POST['contra_actual'] === '' && $_POST['contra_nueva'] !== '' && $_POST['contra_confirmar'] !== '') ||
        ($_POST['contra_actual'] === '' && $_POST['contra_nueva'] === '' && $_POST['contra_confirmar'] !== '') ||
        ($_POST['contra_actual'] === '' && $_POST['contra_nueva'] !== '' && $_POST['contra_confirmar'] === ''))
    {

      $rules[] = array('field' => 'contra_actual',
                      'label' => 'Contraseña actual',
                      'rules' => 'required|max_length[35]|callback_valida_pass_actual');

      $rules[] = array('field' => 'contra_nueva',
                      'label' => 'Contraseña nueva',
                      'rules' => 'required|max_length[35]|matches[contra_confirmar]');

      $rules[] = array('field' => 'contra_confirmar',
                      'label' => 'Confirmar contraseña',
                      'rules' => 'required|max_length[35]');
    }

    $this->form_validation->set_rules($rules);
  }

  public function valida_email($email)
  {
    $id_usuario = $this->session->userdata('id_usuario');
    if (!$this->usuarios_model->valida_email('usuarios',array('id_usuario'=>$id_usuario, 'email'=>$email)))
    {
      $this->form_validation->set_message('valida_email', 'El %s no esta disponible, intenta con otro.');
      return FALSE;
    }
    return TRUE;
  }

  public function valida_pass_actual($pass)
  {
    $id_usuario = $this->session->userdata('id_usuario');
    $passdb = $this->db->query("SELECT pass
                               FROM usuarios
                               WHERE id_usuario=".$id_usuario)->row()->pass;

    if ($passdb !== $pass)
    {
      $this->form_validation->set_message('valida_pass_actual', 'La %s especificada no coincide.');
      return FALSE;
    }
    return TRUE;
  }

  public function add_carrito(){
		$this->load->model('skin_model');
		$res = $this->skin_model->addCarrito();
		$response = $this->showMsgs($res);

		$response['html'] = $this->load->view('tic/paquete/arma_paquete', array(), true);
		echo json_encode($response);
	}
	public function quit_carrito(){
		$this->load->model('skin_model');
		$this->skin_model->quitCarrito();
		$response = $this->showMsgs(3);

		$response['html'] = $this->load->view('tic/paquete/arma_paquete', array(), true);
		echo json_encode($response);
	}
// <<<<<<< .mine
// =======

	public function pagos_pendientes(){
		$res = $this->db->query("SELECT id_paquete, IF(tipo='todo', 'Acceso ilimitado', 'Arma tu paquete') AS tipo,
				costo, meses, tipo AS tipo2, (SELECT COUNT(*) FROM paquetes_articulos WHERE id_paquete = paquetes.id_paquete) AS articulos
			FROM paquetes WHERE status = 0 AND id_usuario = ".$this->session->userdata('id_usuario'))->result();
		$response = array('paquetes' => '', 'articulos' => array());
		foreach($res as $key => $itm){
			$response['paquetes'] .= ','.$itm->id_paquete;
			$itm->descripcion = ($itm->tipo2=='todo'?
				$itm->meses.($itm->meses==1? ' mes': ' meses'):
				$itm->articulos.($itm->articulos==1? ' publicación': ' publicaciones'));
			$res[$key] = $itm;
		}
		$response['articulos'] = $res;
		$response['paquetes'] = substr($response['paquetes'], 1);
		echo json_encode($response);
	}

// >>>>>>> .r44

	/**
	 * Muestra mensajes cuando se realiza alguna accion
	 */
	private function showMsgsCompra($title='Compra')
	{
		$txt='';
		$icono='';
		switch($this->input->get('py')){
			case 'f': //queda pendiente el pago
				$txt = $this->load->view('tic/paquete/agregado', array('id_paquete' => $this->input->get('n')), true);
				$icono = 'success';
				break;
			case 't': //comprado en paypal
				//confirma la compra
				$this->load->model('skin_model');
				$this->skin_model->doPayment($this->input->get('n'));
				//modifico el paquete que quede activo
				$this->db->update('paquetes', array('status' => 1), "id_paquete IN(".$this->input->get('n').") ");
				if ($this->input->get('bc') == 't') {
					//elimina los productos del carrito
					$this->db->delete('paquetes_carrito', array('id_usuario' => $this->session->userdata('id_usuario')) );
				}

				$txt = $this->load->view('tic/paquete/payment', array('id_paquete' => $this->input->get('n')), true);
				$icono = 'success';
				break;
			case 'c': //cancelado de paypal
				$txt = $this->load->view('tic/paquete/cancel', array('id_paquete' => $this->input->get('n')), true);
				$icono = 'error';
				break;
		}

		return array(
				'title' => $title,
				'msg' => $txt,
				'ico' => $icono);
	}
	private function showMsgs($msg, $title='Compra')
	{
		$txt='';
		$icono='';
		switch($msg){
			case 1:
				$txt = 'Se agrego al carrito correctamente.';
				$icono = 'success';
				break;
			case 2:
				$txt = 'No se agrego al carrito. La publicación no existe';
				$icono = 'error';
				break;
			case 3:
				$txt = 'Se quito la publicación del carrito.';
				$icono = 'success';
				break;
		}

		return array(
				'title' => $title,
				'msg' => $txt,
				'ico' => $icono);
	}

}

